Step Functions から Lambda 関数を実行する処理の CDK での記述方法
困っていた内容
CDK v2 で作成した Step Functions のステートマシンの定義内容を確認すると、Lambda 関数の呼び出し方法が
Resource: arn:aws:states:::lambda:invoke
となっています。
以前 CDK v1 では、
Resource: arn:aws:lambda:ap-northeast-1:123456789012:function:MyFunction
と、Resource に関数の ARN を直接記述する方式になっていました。
CDK v2 で Resource に関数の ARN を直接記述するには、どうすればよいでしょうか。
どう対応すればいいの?
方法1: Resource に関数の ARN を直接書く。 方法2: Parameters.FunctionName に関数名を書く。 Resource は arn:aws:states:::lambda:invoke 固定。
Step Functions から Lambda 関数を実行する処理を CDK で記述する場合、aws-cdk-lib.aws_stepfunctions_tasks の LambdaInvoke (construct) [1] を利用できます。 この場合、Construct Props の payloadResponseOnly 値を true にすると 方法1 の記述になり、false (デフォルト) にすると 方法2 の記述になります。
参考資料
[1] class LambdaInvoke (construct) · AWS CDK
[2] Step FunctionsからLambda関数を実行する書き方2つの違い | DevelopersIO
Step FunctionsからLambda関数を実行したい場合、ASL(Amazon State Languageの略。ステートマシンの実装をこの形式で書く)の書き方が2つあります。この違いを調べました。
方法1: Resourceに関数のARNを直接書く 方法2: Parameters.FunctionNameに関数名を書く。Resourceは arn:aws:states:::lambda:invoke 固定
[3] [AWS CDK] Step FunctionsステートマシンでLambdaInvokeでの”payloadResponseOnly”の指定による動作の違いを確認してみた | DevelopersIO
[4] StepFunctionsから呼び出したLambda関数のエラー発生時に、Lambda関数の再試行が行われたか教えてください | DevelopersIO